﻿// -----------------------------------------------------------------------
// <copyright file="MediaInfo.cs" company="Abyssalsoft">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

namespace Core.Player
{
    using System;
    using System.Collections.Generic;
    using System.Text;

    /// <summary>
    /// Provides information about current streaming (file name, ID3 Tags and more...)
    /// </summary>
    public static class MediaInfo
    {
        #region Private members

        /// <summary> Stores the current file name </summary>
        private static string strFileName;

        /// <summary> Stores the current file path </summary>
        private static string strFilePath;

        /// <summary> Stores the radio name </summary>
        private static string strRadioName;

        /// <summary> Stores some channel info (only for online streaming) </summary>
        private static string strRadioChannelInfo;

        /// <summary> Stores the album of the current media file </summary>
        private static string strAlbum;

        /// <summary> Stores the artist of the current media file </summary>
        private static string strArtist;

        /// <summary> Stores the title of the current media file </summary>
        private static string strTitle;

        /// <summary> Stores the comments of the current media file </summary>
        private static string strComment;

        /// <summary> Stores the genre of the current media file </summary>
        private static string strGenre;

        /// <summary> Stores the year of the current media file </summary>
        private static string strYear;

        /// <summary> Stores the track of the current media file </summary>
        private static string strTrack;

        /// <summary> Stores the bit rate of the current media file </summary>
        private static string strBitRate;

        /// <summary> Stores the frequency </summary>
        private static string strFrequency;

        /// <summary> Stores channel info (mono, stereo etc) </summary>
        private static string strChannel;

        /// <summary> Stores channel bytes </summary>
        private static string strBytes;

        /// <summary> Stores the file type of the current media file </summary>
        private static Helper.FileTypeEnum currentFile;

        private static int videoSourceHeight;
        private static int videoSourceWidth;
        private static int videoBitRate;
        private static double averageTimePerFrame;

        #endregion

        #region Common properties

        /// <summary> Gets file name </summary>
        public static string FileName
        {
            get { return strFileName; }
            internal set { strFileName = value; }
        }

        /// <summary> Gets file path </summary>
        public static string FilePath
        {
            get { return strFilePath; }
            internal set { strFilePath = value; }
        }

        /// <summary> Get radio name </summary>
        public static string RadioName
        {
            get { return strRadioName; }
            set { strRadioName = value; }
        }

        /// <summary> Gets the file type of the current media file </summary>
        public static Helper.FileTypeEnum CurrentFile
        {
            get { return currentFile; }
            internal set { currentFile = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string RadioChannelInfo
        {
            get { return strRadioChannelInfo; }
            internal set { strRadioChannelInfo = value; }
        }

        public static string Frequency
        {
            get { return strFrequency; }
            internal set { strFrequency = value; }
        }

        public static string Channel
        {
            get { return strChannel; }
            internal set { strChannel = value; }
        }

        public static string Bytes
        {
            get { return strBytes; }
            internal set { strBytes = value; }
        }

        #endregion

        #region ID3Tags

        /// <summary> Gets online streaming info </summary>
        public static string Album
        {
            get { return strAlbum; }
            internal set { strAlbum = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Artist
        {
            get { return strArtist; }
            internal set { strArtist = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Title
        {
            get { return strTitle; }
            internal set { strTitle = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Comment
        {
            get { return strComment; }
            internal set { strComment = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Genre
        {
            get { return strGenre; }
            internal set { strGenre = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Year
        {
            get { return strYear; }
            internal set { strYear = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string Track
        {
            get { return strTrack; }
            internal set { strTrack = value; }
        }

        /// <summary> Gets online streaming info </summary>
        public static string BitRate
        {
            get { return strBitRate; }
            internal set { strBitRate = value; }
        }

        #endregion

        #region Video properties

        public static int VideoSourceHeight
        {
            get { return videoSourceHeight; }
            internal set { videoSourceHeight = value; }
        }

        public static int VideoSourceWidth
        {
            get { return videoSourceWidth; }
            internal set { videoSourceWidth = value; }
        }

        public static int VideoBitRate
        {
            get { return videoBitRate; }
            internal set { videoBitRate = value; }
        }

        public static double AverageTimePerFrame
        {
            get { return averageTimePerFrame; }
            internal set { averageTimePerFrame = value; }
        }

        #endregion
    }
}
